package cn.tedu.elasticsearch.repository;

import cn.tedu.elasticsearch.entity.Item;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ItemRepository extends
        ElasticsearchRepository<Item,Long> {
    //ElasticsearchRepository<[实体类类名],[实体类主键类型]>
    //我们就可以使用自动生成的增删改成的方法
    //select * fron item where title like "%电脑%";
    //SpringData自定义单条件查询
    /*
      query: 表示当前方法是查询方法，类似sql中的select
      Item/Items: 表示要查询的实体类类型，不带s返回单个对象，带s返回集合类型
      By: 标识开始设置条件的关键字，类似sql中的where
      Title: 要查询的字段
      Matches: 要执行的查询操作，Matches表示执行查询支持分词的字符串，类似sql中的like
     */
    Iterable<Item> queryItemsByTitleMatches(String title);
    //多条件查询
    Iterable<Item> queryItemsByTitleMatchesOrBrandMatches(String title,String brand);
    //排序查询
    Iterable<Item> queryItemsByTitleMatchesOrderByPriceAsc(String title);
    //分页查询
    Page<Item> queryItemsByTitleMatchesOrBrandMatches(String title, String brand, Pageable pageable);
}
